package MyThread_demo.StampedLock_demo;

/**
 * @author ChenYongHao
 * @date 2023/5/4 14:36
 * @desc
 * 该类自 JDK 8 加入，是为了进一步优化读性能，它的特点是在使用读锁、写锁时都必须配合【戳】使用。
 *
 *
 */
public class StampedLock_Demo {
    //加解读锁
    //long stamp = lock.readLock();
    //lock.unlockRead(stamp);
    //加解读锁
    //long stamp = lock.writeLock();
    //lock.unlockWrite(stamp);

    /**
     * 乐观读，StampedLock 支持 tryOptimisticRead() 方法（乐观读），
     * 读取完毕后需要做一次 戳校验 ，如果校验通过，表示这期间确实没有写操作，
     * 数据可以安全使用，如果校验没通过，需要重新获取读锁，保证数据安全。
     */

//    long stamp = lock.tryOptimisticRead();
//    // 验戳
//    if(!lock.validate(stamp)) {
//        // 锁升级
//    }
}
